Laravel是基於MVC架構設計出來的框架,
什麼是MVC(Model–View–Controller)? 簡單來說就是把複雜度簡化,讓每個結構各別分工,大家都有特定的職責
select 'user_name' from users where 'class_name' = 'A'
有了Model後
use App\Models\User;
User::select('user_name')
->where('class_name', '=', 'A');
在這個例子當中感受到的效果可能沒有很顯著,但當SQL語句複雜的時候就可以深刻體會到Model帶來的好處.
View: Laravel利用Blade產生html文件,用來顯示肉眼所能見的到畫面,在 /resources/views
目錄下可以看到一個welcome_blade.php
預設檔,就是我們啟動docker後瀏覽 http://localhost, 所看到的畫面
Controller: 當使用者瀏覽你的網站比方說http://localhost/user, 如果經過一些設定,Route會幫我們去找到UserController,這時Controller可以決定要取得什麼資料,並回傳什麼 View.
雖然Laravel已經幫我們做了上述的分工,但是當專案一大,可能會有一大堆程式碼都擠在Controller之類的情形發生,這邊要介紹一個套件,方便我們快速規劃架構
https://packagist.org/packages/yish/generators
$ sail composer require yish/generators
$ sail artisan make
Did you mean one of these?
make:presenter
make:service
make:repository
make:transformer
...
遇到的問題:Controller負責資料邏輯處理,又要負責View與Model的溝通,導致Controller太過肥大
解決方法: 把原本的架構改成這樣
@inject()
,來引入Presenter,視需求加入.在之後的文章當中,我會直接用這個架構來撰寫這次的專案,想對架構有更深了解的可以關注我並留意之後的文章.
參考文章
https://www.esparkinfo.com/why-laravel-is-the-best-php-framework.html